/**
 * 格式化日期
 * @param {string|Date} date 日期对象或日期字符串
 * @param {string} fmt 格式化模板，默认为 'YYYY-MM-DD HH:mm'
 * @returns {string} 格式化后的日期字符串
 */
export function formatDate(date, fmt = 'YYYY-MM-DD HH:mm') {
  if (!date) return ''; // 如果日期为空，直接返回空字符串
  
  try {
    // 如果是字符串，转换为Date对象
    if (typeof date === 'string') {
      date = new Date(date);
    }
    
    // 确保是有效的Date对象
    if (!(date instanceof Date) || isNaN(date.getTime())) {
      console.warn('无效的日期格式:', date);
      return '';
    }
    
    const o = {
      'M+': date.getMonth() + 1, // 月份
      'D+': date.getDate(), // 日
      'H+': date.getHours(), // 小时
      'm+': date.getMinutes(), // 分
      's+': date.getSeconds(), // 秒
      'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
      'S': date.getMilliseconds() // 毫秒
    }
    
    if (/(Y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    
    for (let k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
        )
      }
    }
    
    return fmt;
  } catch (error) {
    console.error('日期格式化错误:', error);
    return '';
  }
} 